#ifndef _LAYER_H_
#define _LAYER_H_

#include <Core/Uncopyable.h>
#include <Event/Event.h>
#include <Core/EventLoop.h>

namespace Engine2D
{
    struct LayerArgs
    {
        EventLoop * loop;
    };

    class Layer : public Uncopyable
    {
    public:
        Layer() = default;
        virtual ~Layer() = default;
        virtual void OnAttach(void * = nullptr) {}
        virtual void OnDetach() {}
        virtual void OnEvent(EventPtr) {}
        virtual void OnImGui() {}
        virtual void OnUpdate(LayerArgs args) = 0;
    };
} // namespace Engine2D


#endif